<

単体テストの概要

アプリが引き続き動作することを確認するにはどうすればよいですか さらに機能を追加しますか、それとも既存の機能を変更しますか? テストを書くことによって。

単体テストは、単一関数の動作を検証するのに便利です。 メソッドとかクラスとか。のtestパッケージが提供するのは、 単体テストを作成するためのコア フレームワークと、flutter_testパッケージには、ウィジェットをテストするための追加ユーティリティが含まれています。

このレシピでは、testパッケージ 次の手順を使用します。

  1. を追加します。testまたflutter_test依存。
  2. テストファイルを作成します。
  3. テストするクラスを作成します。
  4. 書くtest私たちのクラスのために。
  5. 複数のテストを 1 つに結合するgroup
  6. テストを実行します。

テスト パッケージの詳細については、 を参照してくださいテストパッケージのドキュメント。

1. テストの依存関係を追加する

testパッケージは、コア機能を提供します Dart でテストを作成します。これは次の場合に最適なアプローチです。 Web、サーバー、Flutter アプリで使用されるパッケージを作成します。

追加するには、test開発依存関係としてのパッケージ、 走るflutter pub add:

$ flutter pub add dev:test

2. テストファイルを作成する

この例では、2 つのファイルを作成します。counter.dartcounter_test.dart

counter.dartファイルにはテストするクラスが含まれており、 に住んでいますlibフォルダ。のcounter_test.dartファイルには含まれています テスト自体が内部に存在します。testフォルダ。

一般に、テスト ファイルはtestフォルダ Flutter アプリケーションまたはパッケージのルートにあります。 テスト ファイルは常に次で終わる必要があります。_test.dart、 これは、テストランナーがテストを検索するときに使用する規則です。

完了すると、フォルダー構造は次のようになります。

counter_app/
  lib/
    counter.dart
  test/
    counter_test.dart

3. テストするクラスを作成する

次に、テストする「ユニット」が必要です。覚えておいてください:「ユニット」はユニットの別名です。 関数、メソッド、またはクラス。この例では、Counterクラス の中でlib/counter.dartファイル。インクリメントを担当します そして、valueから始まる0

class Counter {
  int value = 0;

  void increment() => value++;

  void decrement() => value--;
}

ノート:わかりやすくするために、このチュートリアルは「テスト駆動」に従っていません。 「開発」アプローチ。そのスタイルの方が慣れている場合は、 開発の場合、いつでもその道を進むことができます。

4. クラスのテストを作成します

内部counter_test.dartファイルに最初の単体テストを書き込みます。テストは トップレベルを使用して定義されるtest関数を実行し、結果がどうかを確認できます トップレベルを使用すると正しいですexpect関数。 これらの関数は両方とも、testパッケージ。

// Import the test package and Counter class
import 'package:counter_app/counter.dart';
import 'package:test/test.dart';

void main() {
  test('Counter value should be incremented', () {
    final counter = Counter();

    counter.increment();

    expect(counter.value, 1);
  });
}

5. 複数のテストを 1 つに結合します。group

相互に関連する複数のテストがある場合、 を使用してそれらを結合しますgroupによって提供される機能testパッケージ。

import 'package:counter_app/counter.dart';
import 'package:test/test.dart';

void main() {
  group('Counter', () {
    test('value should start at 0', () {
      expect(Counter().value, 0);
    });

    test('value should be incremented', () {
      final counter = Counter();

      counter.increment();

      expect(counter.value, 1);
    });

    test('value should be decremented', () {
      final counter = Counter();

      counter.decrement();

      expect(counter.value, -1);
    });
  });
}

6. テストを実行する

これで、Counterテストが実施されたクラス、 テストを実行できます。

IntelliJ または VSCode を使用してテストを実行する

IntelliJ および VSCode 用の Flutter プラグインは、テストの実行をサポートしています。 これは、多くの場合、テストを作成する際に最適なオプションです。 最速のフィードバック ループとブレークポイントを設定する機能。

  • インテリJ
    1. を開きますcounter_test.dartファイル
    2. を選択Runメニュー
    3. クリックRun 'tests in counter_test.dart'オプション
    4. または、適切なキーボード ショートカットを使用します。 あなたのプラットフォームに合わせて。
  • VSコード
    1. を開きますcounter_test.dartファイル
    2. を選択Runメニュー
    3. クリックStart Debuggingオプション
    4. または、適切なキーボード ショートカットを使用します。 あなたのプラットフォームに合わせて。

ターミナルでテストを実行する

次のコマンドを実行して、ターミナルを使用してテストを実行することもできます。 プロジェクトのルートからコマンドを実行します。

flutter test test/counter_test.dart

単体テストに関するその他のオプションについては、次のコマンドを実行できます。

flutter test --help